﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

//IMPORTAMOS 
using EventSys.BussinesEntities;
using EventSys.BussinesLogic;
using Microsoft.Practices.Unity;

namespace EventSys.MVC4Web.Controllers
{
    
    public class FacultadController : Controller
    {
        [Dependency]
        public IFacultadService facultadService { get; set; }

        
        // GET: /Facultad/
        public ActionResult Index()
        {
            var listaFacultad = facultadService.GetFromAllFacultadByCriterio("");
            return View(listaFacultad);
        }

        [HttpPost]
        public ActionResult Index(string criterio)
        {
            var buscarFacultad = facultadService.GetFromAllFacultadByCriterio(criterio);
            return View(buscarFacultad);
        }


        //  // GET: /Facultad/ _Create
        public ActionResult _Create()
        {
            return PartialView();
        }

        //  // POST: 
        [HttpPost]
        public ActionResult _Create(Facultad facultad)
        {
            var msg = "ERROR";

            try
            {
                facultadService.RegistrarFacultad(facultad);
                var rpt = new
                {
                    ok = true,
                    msg = "Se registro Correctamente"
                };
                return Json(rpt, JsonRequestBehavior.AllowGet);//nos permite enviar el mensaje
            }
            catch (SystemException)
            {
                var rpt = new {
                    ok = false,
                    msg = msg
                };
                return Json(rpt, JsonRequestBehavior.AllowGet);
            }
        }

        //  // GET: /Facultad/Create
        public ActionResult Create()
        {
            return View();
        }

        //  // POST: 
        [HttpPost]
        public ActionResult Create(Facultad facultad)
        {
            try
            {
                // TODO: Add insert logic here
                facultadService.RegistrarFacultad(facultad);

                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                return View(facultad);
            }
        }

        // GET: /Facultad/Edit/5
        public ActionResult Edit(int id)
        {
            var facultad = facultadService.FacultadById(id);
            return View(facultad);
        }

        // POST: 
        [HttpPost]
        public ActionResult Edit(int id, Facultad facultad)
        {
            try
            {
                // TODO: Add update logic here
                facultadService.EditarFacultad(facultad);
                return RedirectToAction("Index");//View(facultad);
            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                return View(facultad);
            }
        }


        public JsonResult GetFacultad()
        {
            var query = from a in facultadService.GetFromAllFacultad()
                        select new { Marca = a.idFacultad + " - " + a.Facultad1, Value = a.idFacultad };

            return Json(query, JsonRequestBehavior.AllowGet);
        }

        /// ///////para validar el Facultad/////
        public ActionResult validarFacultad(string facultad)
        {
            var list = facultadService.GetFromAllFacultad().ToList();

            var rpt = new { existe = false, };

            try
            {
                var query = from f in list select f.Facultad1;

                foreach (var item in query)
                {
                    if (item == facultad)
                    {
                        rpt = new
                        {
                            existe = true,
                        };
                    }
                }
                return Json(rpt, JsonRequestBehavior.AllowGet);//nos permite enviar el mensaje
            }
            catch (SystemException) { }
            return Json(rpt, JsonRequestBehavior.AllowGet);
        }

    }
}
